广度优先搜索可以找到最短的走出迷宫的路径,看能不能走出迷宫很简单,由于广度优先搜索总是找到离某点最近的下一个点,找到的路径一定是最短路径,详见算法笔记上关于广度优先搜索的介绍,问题是如何输出走出迷宫的路径,我们可以申请一个和迷宫一样大的储存点信息的path二维数组,path中的任意元素为到达他之前的点的信息,然后输出path即可。
代码如下:
#include"pch.h"
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<queue>
#include<cstdio>
using namespace std;
//生成迷宫
const int HEIGHT = 10;
const int WIDTH = 10;
bool isFound = false;
int maze[HEIGHT][WIDTH];
void initialMaze()
{
maze[0][0] = 0;//入口
maze[HEIGHT - 1][WIDTH - 1] = 0;//出口
for (int i = 0; i < HEIGHT; i++)//用随机数0,1填充迷宫
{
for (int j = 0; j < WIDTH; j++)
{
if (i == 0 && j == 0)
continue;
if (i == HEIGHT - 1 && j == WIDTH - 1)
continue;
maze[i][j] = rand() % 2;
}
}
//展示生成的迷宫
for (int i = 0; i < HEIGHT; i++)
{